import { CoroutineLock } from "../../../../../Core/Module/CoroutineLock/CoroutineLock";
import { Entity } from "../../../../../Core/Module/Entity/Entity";
import { IAwake, IAwake2 } from "../../../../../Core/Module/EventSystem/IAwakeSystem";
import { IDestroy } from "../../../../../Core/Module/EventSystem/IDestroySystem";
import { ImplementsInterface } from "../../../../../Decorator/Decorator";
import { Dictionary } from "../../../../../Support/Share/Lib/Dictionary";

@ImplementsInterface(IAwake2)
@ImplementsInterface(IDestroy)
export class LockInfo extends Entity implements IAwake2<number, CoroutineLock>, IDestroy {

    public LockInstanceId: number;

    public CoroutineLock: CoroutineLock;

}

@ImplementsInterface(IAwake)
export class LocationComponent extends Entity implements IAwake {

    public readonly locations: Dictionary<number, number> = new Dictionary<number, number>();

    public readonly lockInfos: Dictionary<number, LockInfo> = new Dictionary<number, LockInfo>();

}